package com.itzz.spring_zhoneHeng.service.Impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.itzz.spring_zhoneHeng.base.RestResponse;
import com.itzz.spring_zhoneHeng.base.SystemCode;
import com.itzz.spring_zhoneHeng.dao.RoleDao;
import com.itzz.spring_zhoneHeng.pojo.Role;
import com.itzz.spring_zhoneHeng.service.RoleService;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.HashMap;
import java.util.List;

@Service
public class RoleServiceImpl implements RoleService {

    @Autowired
    RoleDao roleDao;

    @Override
    public RestResponse queryAll(HashMap<String, Object> map) {
//
        //开启分页
        PageHelper.startPage((Integer)map.get("pageNum"),(Integer)map.get("pageSize"));
        //查询所有的角色
        List<Role> roles = roleDao.queryAll((String) map.get("name"));
        //将查询过的信息放进分页插件中
        PageInfo<Role> rolePageInfo = new PageInfo<>(roles);

        return RestResponse.ok(rolePageInfo);
    }

    //修改
    @Override
    @Transactional
    public RestResponse edit(Role role,Integer[] ids){
        //修改角色
        int i = roleDao.updateById(role);
        //删除对应的角色和权限表 根据rid删除r_m表
        roleDao.delR_M(role.getId());
        //添加对应的角色和权限表 根据rid添加r_m表
        roleDao.addR_M(role.getId(),ids);
        return RestResponse.ok(i);
    }

    @Override
    @Transactional
    public RestResponse add(Role role,Integer[] ids){
        if(role!=null&&!role.equals("")){
            //添加角色到角色表
            role.setId(0);
             roleDao.add(role);
        }
        //添加对应的角色和权限表 根据rid和mid 添加r_m表
        int i = roleDao.addR_M(role.getId(), ids);
        return RestResponse.ok(i);
    }


    //根据id删除角色
    @Override
    @Transactional
    public RestResponse del(Integer id){
        //删除角色
        int i = roleDao.deleteById(id);
        //删除对应的角色和权限表 根据rid删除r_m表
        roleDao.delR_M(id);
        if (i>0){
            return RestResponse.ok(i);
        }
        return RestResponse.fail(SystemCode.UpdateError.getCode()
                ,SystemCode.UpdateError.getMessage());
    }

}
